package com.agent.common.utils;

import java.time.Instant;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

/**
 * UTC日期时间工具类
 * @author Jeff_Wan
 * @description 提供UTC时区的日期时间处理功能
 */
public class UTCDateUtils {
    
    public static final String DATE_FORMAT = "yyyy-MM-dd";
    public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    
    /**
     * 获取当前UTC日期字符串
     * @return yyyy-MM-dd 格式的UTC日期字符串
     */
    public static String getCurrentUTCDateString() {
        return ZonedDateTime.now(ZoneOffset.UTC)
                .format(DateTimeFormatter.ofPattern(DATE_FORMAT));
    }
    
    /**
     * 获取当前UTC日期时间字符串
     * @return yyyy-MM-dd HH:mm:ss 格式的UTC日期时间字符串
     */
    public static String getCurrentUTCDateTimeString() {
        return ZonedDateTime.now(ZoneOffset.UTC)
                .format(DateTimeFormatter.ofPattern(DATETIME_FORMAT));
    }
    
    /**
     * 计算订阅到期日期(UTC)
     * @param startDate 开始日期(UTC)
     * @param isYearly 是否年订阅
     * @return UTC到期日期
     */
    public static Instant calculateUTCExpiryDate(Instant startDate, boolean isYearly) {
        ZonedDateTime utcDate = startDate.atZone(ZoneOffset.UTC);
        return isYearly ? 
            utcDate.plusYears(1).toInstant() : 
            utcDate.plusMonths(1).toInstant();
    }
}